<!DOCTYPE html>
<html>

<head>
    <title>数据库表结构复制页面</title>
    <style>
        .table-container {
            margin-bottom: 20px;
            border: 1px solid #ddd;
            padding: 10px;
        }

        .table-title {
            font-weight: bold;
            margin-bottom: 10px;
        }

        .row {
            margin-bottom: 5px;

            /* white-space: pre-wrap; */
        }

        .copy-btn {
            cursor: pointer;
            color: blue;
            text-decoration: underline;
            margin-left: 5px;
        }

       
    </style>
</head>

<body>
   <div class="table-container">
        <div class="table-title ">表名: user</div>
        <div class="row">
            user_id 用户ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（主键）')">复制</span>
        </div>
        <div class="row">
            user_name 用户名/学工号（唯一账号）
            <span class="copy-btn" onclick="copyRow(event,'user_name 用户名/学工号（唯一账号）')">复制</span>
        </div>
        <div class="row">
            user_role 用户角色（1-管理员,2-教师,3-学生）
            <span class="copy-btn" onclick="copyRow(event,'user_role 用户角色（1-管理员,2-教师,3-学生）')">复制</span>
        </div>
        <div class="row">
            password 密码（加密存储）
            <span class="copy-btn" onclick="copyRow(event,'password 密码（加密存储）')">复制</span>
        </div>
        <div class="row">
            create_time 用户创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 用户创建时间')">复制</span>
        </div>
        <div class="row">
            last_login_ip 最近登录IP地址
            <span class="copy-btn" onclick="copyRow(event,'last_login_ip 最近登录IP地址')">复制</span>
        </div>
        <div class="row">
            login_fail_count 登录失败次数
            <span class="copy-btn" onclick="copyRow(event,'login_fail_count 登录失败次数')">复制</span>
        </div>
        <div class="row">
            password_expired_at 密码过期时间
            <span class="copy-btn" onclick="copyRow(event,'password_expired_at 密码过期时间')">复制</span>
        </div>
    </div>

    <div class="table-container">
        <div class="table-title">表名: graduate_info</div>
        <div class="row">
            graduate_id 毕业生ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'graduate_id 毕业生ID（主键）')">复制</span>
        </div>
        <div class="row">
            user_id 用户ID（外键，关联用户表）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（外键，关联用户表）')">复制</span>
        </div>
        <div class="row">
            nick_name 昵称
            <span class="copy-btn" onclick="copyRow(event,'nick_name 昵称')">复制</span>
        </div>
        <div class="row">
            avatar_url 用户头像URL（默认头像）
            <span class="copy-btn" onclick="copyRow(event,'avatar_url 用户头像URL（默认头像）')">复制</span>
        </div>
        <div class="row">
            employment_status 就业状态（1-在职,2-失业,3-深造）
            <span class="copy-btn" onclick="copyRow(event,'employment_status 就业状态（1-在职,2-失业,3-深造）')">复制</span>
        </div>
        <div class="row">
            phone 手机号
            <span class="copy-btn" onclick="copyRow(event,'phone 手机号')">复制</span>
        </div>
        <div class="row">
            real_name 真实姓名
            <span class="copy-btn" onclick="copyRow(event,'real_name 真实姓名')">复制</span>
        </div>
        <div class="row">
            major 专业
            <span class="copy-btn" onclick="copyRow(event,'major 专业')">复制</span>
        </div>
        <div class="row">
            college 学院
            <span class="copy-btn" onclick="copyRow(event,'college 学院')">复制</span>
        </div>
        <div class="row">
            graduation_year 毕业年份
            <span class="copy-btn" onclick="copyRow(event,'graduation_year 毕业年份')">复制</span>
        </div>
        <div class="row">
            extended_info 扩展信息（JSON格式）
            <span class="copy-btn" onclick="copyRow(event,'extended_info 扩展信息（JSON格式）')">复制</span>
        </div>
        <div class="row">
            employment_info 就业信息（JSON格式）
            <span class="copy-btn" onclick="copyRow(event,'employment_info 就业信息（JSON格式）')">复制</span>
        </div>
        <div class="row">
            education_info 教育背景（JSON格式）
            <span class="copy-btn" onclick="copyRow(event,'education_info 教育背景（JSON格式）')">复制</span>
        </div>
        <div class="row">
            create_time 创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 创建时间')">复制</span>
        </div>
        <div class="row">
            update_time 最后更新时间
            <span class="copy-btn" onclick="copyRow(event,'update_time 最后更新时间')">复制</span>
        </div>
    </div>

    <!-- 其他表结构按相同方式生成，此处省略以避免冗长，但实际应完整生成所有表 -->
    <!-- employment_data表 -->
    <div class="table-container">
        <div class="table-title">表名: employment_data</div>
        <div class="row">
            employment_data_id 数据ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'employment_data_id 数据ID（主键）')">复制</span>
        </div>
        <div class="row">
            year 年份
            <span class="copy-btn" onclick="copyRow(event,'year 年份')">复制</span>
        </div>
        <div class="row">
            college 学院名称
            <span class="copy-btn" onclick="copyRow(event,'college 学院名称')">复制</span>
        </div>
        <div class="row">
            major 专业名称
            <span class="copy-btn" onclick="copyRow(event,'major 专业名称')">复制</span>
        </div>
        <div class="row">
            total_graduates 总毕业生数
            <span class="copy-btn" onclick="copyRow(event,'total_graduates 总毕业生数')">复制</span>
        </div>
        <div class="row">
            employed 就业人数
            <span class="copy-btn" onclick="copyRow(event,'employed 就业人数')">复制</span>
        </div>
        <div class="row">
            unemployed 未就业人数
            <span class="copy-btn" onclick="copyRow(event,'unemployed 未就业人数')">复制</span>
        </div>
        <div class="row">
            further_study 继续深造人数
            <span class="copy-btn" onclick="copyRow(event,'further_study 继续深造人数')">复制</span>
        </div>
        <div class="row">
            create_time 数据创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 数据创建时间')">复制</span>
        </div>
        <div class="row">
            update_time 最后更新时间
            <span class="copy-btn" onclick="copyRow(event,'update_time 最后更新时间')">复制</span>
        </div>
    </div>

    <!-- province_distribution表 -->
    <div class="table-container">
        <div class="table-title">表名: province_distribution</div>
        <div class="row">
            id 主键ID
            <span class="copy-btn" onclick="copyRow(event,'id 主键ID')">复制</span>
        </div>
        <div class="row">
            employment_data_id 关联统计数据ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'employment_data_id 关联统计数据ID（外键）')">复制</span>
        </div>
        <div class="row">
            province 省份名称（中文全称）
            <span class="copy-btn" onclick="copyRow(event,'province 省份名称（中文全称）')">复制</span>
        </div>
        <div class="row">
            employed_count 就业人数
            <span class="copy-btn" onclick="copyRow(event,'employed_count 就业人数')">复制</span>
        </div>
        <div class="row">
            unemployed_count 未就业人数
            <span class="copy-btn" onclick="copyRow(event,'unemployed_count 未就业人数')">复制</span>
        </div>
        <div class="row">
            further_study_count 继续深造人数
            <span class="copy-btn" onclick="copyRow(event,'further_study_count 继续深造人数')">复制</span>
        </div>
    </div>

    <!-- moment表 -->
    <div class="table-container">
        <div class="table-title">表名: moment</div>
        <div class="row">
            moment_id 动态ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'moment_id 动态ID（主键）')">复制</span>
        </div>
        <div class="row">
            content 动态内容
            <span class="copy-btn" onclick="copyRow(event,'content 动态内容')">复制</span>
        </div>
        <div class="row">
            like_num 点赞数
            <span class="copy-btn" onclick="copyRow(event,'like_num 点赞数')">复制</span>
        </div>
        <div class="row">
            comment_num 评论数
            <span class="copy-btn" onclick="copyRow(event,'comment_num 评论数')">复制</span>
        </div>
        <div class="row">
            user_id 用户ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（外键）')">复制</span>
        </div>
        <div class="row">
            create_time 创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 创建时间')">复制</span>
        </div>
        <div class="row">
            image_urls 图片URL列表（逗号分隔）
            <span class="copy-btn" onclick="copyRow(event,'image_urls 图片URL列表（逗号分隔）')">复制</span>
        </div>
    </div>

    <!-- comment表 -->
    <div class="table-container">
        <div class="table-title">表名: comment</div>
        <div class="row">
            comment_id 评论ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'comment_id 评论ID（主键）')">复制</span>
        </div>
        <div class="row">
            moment_id 动态ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'moment_id 动态ID（外键）')">复制</span>
        </div>
        <div class="row">
            content 评论内容
            <span class="copy-btn" onclick="copyRow(event,'content 评论内容')">复制</span>
        </div>
        <div class="row">
            pid 父评论ID
            <span class="copy-btn" onclick="copyRow(event,'pid 父评论ID')">复制</span>
        </div>
        <div class="row">
            user_id 用户ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（外键）')">复制</span>
        </div>
        <div class="row">
            reply_user_id 被回复用户ID
            <span class="copy-btn" onclick="copyRow(event,'reply_user_id 被回复用户ID')">复制</span>
        </div>
        <div class="row">
            like_num 点赞数
            <span class="copy-btn" onclick="copyRow(event,'like_num 点赞数')">复制</span>
        </div>
        <div class="row">
            create_time 评论创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 评论创建时间')">复制</span>
        </div>
    </div>

    <!-- career_development_resource表 -->
    <div class="table-container">
        <div class="table-title">表名: career_development_resource</div>
        <div class="row">
            resource_id 资源ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'resource_id 资源ID（主键）')">复制</span>
        </div>
        <div class="row">
            resource_type 资源类型（1:职业规划文章,2:行业资讯,3:招聘信息）
            <span class="copy-btn" onclick="copyRow(event,'resource_type 资源类型（1:职业规划文章,2:行业资讯,3:招聘信息）')">复制</span>
        </div>
        <div class="row">
            title 标题
            <span class="copy-btn" onclick="copyRow(event,'title 标题')">复制</span>
        </div>
        <div class="row">
            content 内容
            <span class="copy-btn" onclick="copyRow(event,'content 内容')">复制</span>
        </div>
        <div class="row">
            keywords 关键词（便于搜索）
            <span class="copy-btn" onclick="copyRow(event,'keywords 关键词（便于搜索）')">复制</span>
        </div>
        <div class="row">
            update_time 更新时间
            <span class="copy-btn" onclick="copyRow(event,'update_time 更新时间')">复制</span>
        </div>
        <div class="row">
            create_time 创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 创建时间')">复制</span>
        </div>
        <div class="row">
            user_id 创建人用户ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 创建人用户ID（外键）')">复制</span>
        </div>
    </div>

    <!-- alumni_event表 -->
    <div class="table-container">
        <div class="table-title">表名: alumni_event</div>
        <div class="row">
            event_id 活动ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'event_id 活动ID（主键）')">复制</span>
        </div>
        <div class="row">
            event_name 活动名称
            <span class="copy-btn" onclick="copyRow(event,'event_name 活动名称')">复制</span>
        </div>
        <div class="row">
            event_date 活动日期
            <span class="copy-btn" onclick="copyRow(event,'event_date 活动日期')">复制</span>
        </div>
        <div class="row">
            location 活动地点
            <span class="copy-btn" onclick="copyRow(event,'location 活动地点')">复制</span>
        </div>
        <div class="row">
            event_content 活动内容（长文本）
            <span class="copy-btn" onclick="copyRow(event,'event_content 活动内容（长文本）')">复制</span>
        </div>
        <div class="row">
            create_time 活动创建时间
            <span class="copy-btn" onclick="copyRow(event,'create_time 活动创建时间')">复制</span>
        </div>
        <div class="row">
            update_time 活动更新时间
            <span class="copy-btn" onclick="copyRow(event,'update_time 活动更新时间')">复制</span>
        </div>
        <div class="row">
            user_id 活动发布人ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 活动发布人ID（外键）')">复制</span>
        </div>
    </div>

    <!-- event_registration表 -->
    <div class="table-container">
        <div class="table-title">表名: event_registration</div>
        <div class="row">
            registration_id 报名ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'registration_id 报名ID（主键）')">复制</span>
        </div>
        <div class="row">
            event_id 活动ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'event_id 活动ID（外键）')">复制</span>
        </div>
        <div class="row">
            registration_time 报名时间
            <span class="copy-btn" onclick="copyRow(event,'registration_time 报名时间')">复制</span>
        </div>
        <div class="row">
            user_id 用户ID（外键）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（外键）')">复制</span>
        </div>
        <div class="row">
            phone 联系方式手机号
            <span class="copy-btn" onclick="copyRow(event,'phone 联系方式手机号')">复制</span>
        </div>
    </div>
    <!-- event_review表 -->
    <div class="table-container">
        <div class="table-title">表名: event_review</div>
        <div class="row">
            review_id 回顾ID（主键）
            <span class="copy-btn" onclick="copyRow(event,'review_id 回顾ID（主键）')">复制</span>
        </div>
        <div class="row">
            event_id 活动ID（外键，关联校友活动表）
            <span class="copy-btn" onclick="copyRow(event,'event_id 活动ID（外键，关联校友活动表）')">复制</span>
        </div>
        <div class="row">
            user_id 用户ID（回顾发布者，关联用户表）
            <span class="copy-btn" onclick="copyRow(event,'user_id 用户ID（回顾发布者，关联用户表）')">复制</span>
        </div>
        <div class="row">
            review_content 回顾内容（必填）
            <span class="copy-btn" onclick="copyRow(event,'review_content 回顾内容（必填）')">复制</span>
        </div>
        <div class="row">
            review_images 回顾图片URLs（逗号分隔）
            <span class="copy-btn" onclick="copyRow(event,'review_images 回顾图片URLs（逗号分隔）')">复制</span>
        </div>
        <div class="row">
            create_time 回顾创建时间（自动生成）
            <span class="copy-btn" onclick="copyRow(event,'create_time 回顾创建时间（自动生成）')">复制</span>
        </div>
        <div class="row">
            update_time 回顾更新时间（自动更新）
            <span class="copy-btn" onclick="copyRow(event,'update_time 回顾更新时间（自动更新）')">复制</span>
        </div>
    </div>
    在这一章节中主要对整个毕业管理系统的实现步骤进行了详细的描述，并且使用前后端分离的开发方式实现了六大部分的功能：用户管理模块、毕业生信息管理模块、就业数据分析模块、校友服务模块、系统管理模块以及最后的手机端适配模块;在前端方面主要是采用了Vue 3 + Element Plus、VantUI进行页面的制作,并且通过路由映射以及 UA判断来实现在 PC端以及移动端之间的自动适配效果;而后端则是在 Spring Boot框架的基础上搭建起来的一个后台管理系统,该系统采用了多层的架构模式，并在 MyBatis-Plus的帮助下完成数据的持久化工作。此外系统也有不少创新点，比如利用Redis实现对校友活动文章和职业发展资源文章的浏览量统计，使用echarts实现了对复杂的毕业生数据的可视化实现，包括全国地图和省份地图的切换，滑动的动态柱状图，以及复杂的二级评论系统的开发，还有异步的日志记录的实现。在开发上尽可能做到了毕业生系统的内容完善和代码健壮性，拥有比较好的











    <script>
        function copyRow(event,text) {
            event.preventDefault(); // 建议添加以防止默认行为干扰
            navigator.clipboard.writeText(text)
                .then(() => {
                    const btn = event.target.closest('.copy-btn'); // 更精确的选择方式
                    btn.textContent = '✅ 已复制';
                    btn.style.color = '#28a745';
                    setTimeout(() => {
                        btn.textContent = '复制';
                        btn.style.color = '#0000ff';
                    }, 1500);
                })
                .catch(err => {
                    console.error('复制失败:', err);
                    event.target.textContent = '❌ 失败';
                    event.target.style.color = 'red';
                });
        }
    </script>
</body>

</html>